// 封装和用户相关的请求 ==> 复用 / 维护
import type { CodeType, UserData, UserType } from '@/types/user' // uni全端项目中需要表示类型  type
import { request } from '@/utils/http'

// 密码登录的参数类型
interface LoginType {
  mobile: string
  password: string
}

interface LoginType2 {
  mobile: string
  code: string
}

/**
 * 密码登录
 * @param obj 登录需要手机号string  密码 string
 */
export const loginByPassAPI = (obj: LoginType) =>
  request.post<null, UserType>('/login/password', obj)

/**
 * 获取验证码
 * @param mobile 手机号
 * @param type 验证码的用途
 * @returns Promise<结果>
 */
export const getCodeAPI = (mobile: string, type: CodeType) => {
  return request.get<null, { code: string }>('/code', {
    // 这里的params对象就是在描述接口文档中的query
    params: {
      mobile: mobile,
      type: type,
    },
  })
}

/**
 * 通过验证码登录
 * @param obj 对象 手机号  验证码
 * @returns promise<结果>
 */
export const loginByCodeAPI = (obj: LoginType2) => {
  return request.post<null, UserType>('/login', obj)
}

// 个人信息
export const userInfoApi = () => {
  return request.get<null, UserData>('/patient/myUser')
}
